import request from '@/utils/request';
import type { PageResult, ResponseData } from '../typing';
// 参数接口
export interface MessageQueryParams {
    /*当前第几页(默认1) */
    current?: number;
    /*每页条数(默认20) */
    size?: number;
    /*搜索内容 */
    searchContent?: string;
    /*开始时间，LocalDateTime格式 */
    startTime?: Record<string, unknown>;
    /*结束时间，LocalDateTime格式 */
    endTime?: Record<string, unknown>;
    /*发送人ID，单聊 */
    sender?: string;
    /*接收人ID，单聊 */
    recipient?: string;
    /*群ID，群聊发送 */
    roomId?: string;
    /*消息ID,定位消息用 */
    msgId?: string;
    /*消息浏览方向，up上翻，down下翻 */
    direction?: string;
    /*是否是单聊，false视为群聊 */
    isSingleChat: boolean;
    page?: {
        records?: {
            id?: Record<string, unknown>;
            /*消息ID */
            msgid?: string;
            /*密钥版本 */
            publickeyVer?: string;
            /*消息序号，最大值为2^64 -1 */
            seq?: Record<string, unknown>;
            /*消息动作，目前有send(发送消息)/recall(撤回消息)/switch(切换企业日志)三种类型 */
            action?: string;
            /*消息发送方id。同一企业内容为userid，非相同企业和机器人消息均为external_userid */
            msgfrom?: string;
            /*消息来源。1、内部消息。2、_external结尾的消息，表明该消息是一条外部消息。3、_updown_stream结尾的消息，表明该消息是一条上下游消息 */
            msgsource?: Record<string, unknown>;
            /*消息接收方ID列表，多个接收ID以逗号分隔 */
            tolist?: string;
            /*消息类型 */
            msgtype?: string;
            /*消息发送时间戳，utc时间，ms单位 */
            msgtime?: Record<string, unknown>;
            /*消息发送时间 */
            msgtimeFormat?: string;
            /*文本消息 */
            text?: string;
            /*附件ID */
            sdkfield?: string;
            /*消息数据 json格式 */
            msgdata?: string;
            /*1：未加载媒体;	2：正在加载媒体；	3：媒体加载完成；	4：媒体加载失败 */
            status?: Record<string, unknown>;
            /*媒体状态码，0-未下载，1-已下载，2-已上传Minio */
            mediaCode?: Record<string, unknown>;
            /*媒体文件路径 */
            mediaPath?: string;
            /*媒体文件网络路径 */
            mediaNetworkPath?: string;
            /*群聊消息的群id。如果是单聊则为空 */
            roomid?: string;
            /*创建时间 */
            created?: string;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface MessageQueryRes {
    code: number;
    data: {
        size: number;
        total: number;
        current: number;
        records: {
            id: number;
            /*消息ID */
            msgid: string;
            /*密钥版本 */
            publickeyVer: Record<string, unknown>;
            /*消息序号，最大值为2^64 -1 */
            seq: number;
            /*消息动作，目前有send(发送消息)/recall(撤回消息)/switch(切换企业日志)三种类型 */
            action: string;
            /*消息发送方id。同一企业内容为userid，非相同企业和机器人消息均为external_userid */
            msgfrom: string;
            /*消息来源。1、内部消息。2、_external结尾的消息，表明该消息是一条外部消息。3、_updown_stream结尾的消息，表明该消息是一条上下游消息 */
            msgsource: number;
            /*消息接收方ID列表，多个接收ID以逗号分隔 */
            tolist: string;
            /*消息类型 */
            msgtype: string;
            /*消息发送时间戳，utc时间，ms单位 */
            msgtime: number;
            /*消息发送时间 */
            msgtimeFormat: Record<string, unknown>;
            /*文本消息 */
            text: string;
            /*附件ID */
            sdkfield: string;
            /*消息数据 json格式 */
            msgdata: string;
            /*1：未加载媒体;	2：正在加载媒体；	3：媒体加载完成；	4：媒体加载失败 */
            status: number;
            /*媒体状态码，0-未下载，1-已下载，2-已上传Minio */
            mediaCode: number;
            /*媒体文件路径 */
            mediaPath: string;
            /*媒体文件网络路径 */
            mediaNetworkPath: string;
            /*群聊消息的群id。如果是单聊则为空 */
            roomid: string;
            /*创建时间 */
            created: Record<string, unknown>;
        }[];
        pages: number;
    };
    msg: string;
}
/**
 * 获取消息
 * @param {object} params MessageQuery
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.searchContent 搜索内容
 * @param {object} params.startTime 开始时间，LocalDateTime格式
 * @param {object} params.endTime 结束时间，LocalDateTime格式
 * @param {string} params.sender 发送人ID，单聊
 * @param {string} params.recipient 接收人ID，单聊
 * @param {string} params.roomId 群ID，群聊发送
 * @param {string} params.msgId 消息ID,定位消息用
 * @param {string} params.direction 消息浏览方向，up上翻，down下翻
 * @param {boolean} params.isSingleChat 是否是单聊，false视为群聊
 * @param {object} params.page
 * @returns
 */
export function messageQuery(params: MessageQueryParams): Promise<MessageQueryRes> {
    return request.post(`/public/opinion/message`, params);
}
// 响应接口
export interface GetPermitUserListRes {
    code: number;
    data: {
        /*用户ID */
        id: number;
        /*项目名称 */
        projects: string;
        /*姓名 */
        name: string;
        /*员工编号 */
        code: string;
        /*工作手机号 */
        workPhone: string;
        /*岗位名称 */
        jobName: string;
        /*角色 */
        roles: string;
        /*专业条线 */
        professionalLine: string;
        /*负责区域 */
        projectNames: string;
        /*是否管家 */
        housekeeper: number;
        /*头像 */
        avatar: string;
    }[];
    msg: string;
}
/**
 * 获得开启会话内容存档开启成员
 * @param {string} projectCode 项目code
 * @param {string} butlerContent 姓名/电话
 * @returns
 */
export function getPermitUserList(projectCode: string, butlerContent: string): Promise<GetPermitUserListRes> {
    return request.get(`/public/opinion/getPermitUserList?projectCode=${projectCode}&butlerContent=${butlerContent}`);
}
// 参数接口
export interface GetOwnerQueryParams {
    /*当前第几页(默认1) */
    current?: number;
    /*每页条数(默认20) */
    size?: number;
    /*项目code */
    projectCode: string;
    /*客户微信名/备注 */
    ownerContent?: string;
    page?: {
        records?: {
            id?: Record<string, unknown>;
            /*开启成员ID */
            userid?: string;
            /*外部联系人的userid */
            externalUserid?: string;
            /*外部联系人头像 */
            avatar?: string;
            /*外部联系人的名称 */
            name?: string;
            /*该成员对此微信客户备注的企业名称（仅微信客户有该字段） */
            remark?: string;
            /*外部联系人的类型，1表示该外部联系人是微信用户，2表示该外部联系人是企业微信用户 */
            type?: Record<string, unknown>;
            /*外部联系人性别 0-未知 1-男性 2-女性 */
            gender?: Record<string, unknown>;
            /*外部联系人性别 0-未知 1-男性 2-女性 */
            addWay?: Record<string, unknown>;
            /*创建时间 */
            created?: string;
            /*修改时间 */
            updated?: string;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetOwnerQueryRes {
    code: number;
    data: {
        size: number;
        total: number;
        current: number;
        records: {
            id: number;
            /*开启成员ID */
            userid: string;
            /*外部联系人的userid */
            externalUserid: string;
            /*外部联系人头像 */
            avatar: string;
            /*外部联系人的名称 */
            name: string;
            /*该成员对此微信客户备注的企业名称（仅微信客户有该字段） */
            remark: string;
            /*外部联系人的类型，1表示该外部联系人是微信用户，2表示该外部联系人是企业微信用户 */
            type: number;
            /*外部联系人性别 0-未知 1-男性 2-女性 */
            gender: number;
        }[];
        pages: number;
    };
    msg: string;
}
/**
 * 获取业主Page，By项目code
 * @param {object} params 舆情管控 - 业主参数
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.projectCode 项目code
 * @param {string} params.ownerContent 客户微信名/备注
 * @param {object} params.page
 * @returns
 */
export function getOwnerQuery(params: GetOwnerQueryParams): Promise<GetOwnerQueryRes> {
    return request.post(`/public/opinion/getOwnerQuery`, params);
}
// 响应接口
export interface GetOwnerButlerRes {
    code: number;
    data: {
        /*用户ID */
        id: number;
        /*项目名称 */
        projects: string;
        /*姓名 */
        name: string;
        /*员工编号 */
        code: string;
        /*工作手机号 */
        workPhone: string;
        /*岗位名称 */
        jobName: string;
        /*角色 */
        roles: string;
        /*专业条线 */
        professionalLine: string;
        /*负责区域 */
        projectNames: string;
        /*是否管家 */
        housekeeper: number;
        /*头像 */
        avatar: string;
    }[];
    msg: string;
}
/**
 * 获取业主的管家List，By项目code
 * @param {string} externalUserid 业主微信的ID（外部联系人ID）
 * @param {string} projectCode 项目code
 * @param {string} butlerContent 员工姓名/电话
 * @param {string} current 当前第几页(默认1)
 * @param {string} size 每页条数(默认20)
 * @returns
 */
export function getOwnerButler(externalUserid: string, projectCode: string, butlerContent: string, current: string, size: string): Promise<GetOwnerButlerRes> {
    return request.get(`/public/opinion/getOwnerButler?externalUserid=${externalUserid}&projectCode=${projectCode}&butlerContent=${butlerContent}&current=${current}&size=${size}`);
}
// 参数接口
export interface GetButlerOwnerParams {
    /*当前第几页(默认1) */
    current?: number;
    /*每页条数(默认20) */
    size?: number;
    /*企业人员（管家）ID */
    userId: string;
    /*客户微信名/备注 */
    ownerContent?: string;
    page?: {
        records?: {
            id?: Record<string, unknown>;
            /*开启成员ID */
            userid?: string;
            /*外部联系人的userid */
            externalUserid?: string;
            /*外部联系人头像 */
            avatar?: string;
            /*外部联系人的名称 */
            name?: string;
            /*该成员对此微信客户备注的企业名称（仅微信客户有该字段） */
            remark?: string;
            /*外部联系人的类型，1表示该外部联系人是微信用户，2表示该外部联系人是企业微信用户 */
            type?: Record<string, unknown>;
            /*外部联系人性别 0-未知 1-男性 2-女性 */
            gender?: Record<string, unknown>;
            /*外部联系人性别 0-未知 1-男性 2-女性 */
            addWay?: Record<string, unknown>;
            /*创建时间 */
            created?: string;
            /*修改时间 */
            updated?: string;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetButlerOwnerRes {
    code: number;
    data: {
        size: number;
        total: number;
        current: number;
        records: {
            id: number;
            /*开启成员ID */
            userid: string;
            /*外部联系人的userid */
            externalUserid: string;
            /*外部联系人头像 */
            avatar: string;
            /*外部联系人的名称 */
            name: string;
            /*该成员对此微信客户备注的企业名称（仅微信客户有该字段） */
            remark: string;
            /*外部联系人的类型，1表示该外部联系人是微信用户，2表示该外部联系人是企业微信用户 */
            type: number;
            /*外部联系人性别 0-未知 1-男性 2-女性 */
            gender: number;
        }[];
        pages: number;
    };
    msg: string;
}
/**
 * 获取管家的业主
 * @param {object} params 舆情管控 - 业主参数
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.userId 企业人员（管家）ID
 * @param {string} params.ownerContent 客户微信名/备注
 * @param {object} params.page
 * @returns
 */
export function getButlerOwner(params: GetButlerOwnerParams): Promise<GetButlerOwnerRes> {
    return request.post(`/public/opinion/getButlerOwner`, params);
}
// 参数接口
export interface GetButlerGroupChatParams {
    /*当前第几页(默认1) */
    current?: number;
    /*每页条数(默认20) */
    size?: number;
    /*项目code */
    projectCode?: string;
    /*管家或者业主的ID */
    userId?: string;
    /*聊天群的名字 */
    groupChatName?: string;
    page?: {
        records?: {
            /*聊天群ID */
            roomid?: string;
            /*聊天群名 */
            roomname?: string;
            /*聊天群创建时间 */
            roomCreateTime?: string;
            /*聊天群公告 */
            notice?: string;
            /*1-内部群，2-外部群 */
            type?: boolean;
            /*群成员列表 */
            members?: string;
            /*群成员列表 */
            memberIdStr?: string;
            /*创建时间 */
            created?: string;
            /*更新时间 */
            updated?: string;
            /*是否删除 */
            delFlag?: boolean;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetButlerGroupChatRes {
    code: number;
    data: {
        size: number;
        total: number;
        current: number;
        records: {
            /*聊天群ID */
            roomid: string;
            /*聊天群名 */
            roomname: string;
            /*聊天群创建时间 */
            roomCreateTime: Record<string, unknown>;
            /*聊天群公告 */
            notice: string;
            /*1-内部群，2-外部群 */
            type: boolean;
            /*群成员列表 */
            members: string;
            /*群成员列表 */
            memberIdStr: string;
            /*创建时间 */
            created: Record<string, unknown>;
            /*更新时间 */
            updated: Record<string, unknown>;
            /*是否删除 */
            delFlag: boolean;
        }[];
        pages: number;
    };
    msg: string;
}
/**
 * 获取管家-业主的群聊
 * @param {object} params GetButlerOwnerGroupChatQuery
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.projectCode 项目code
 * @param {string} params.userId 管家或者业主的ID
 * @param {string} params.groupChatName 聊天群的名字
 * @param {object} params.page
 * @returns
 */
export function getButlerGroupChat(params: GetButlerGroupChatParams): Promise<GetButlerGroupChatRes> {
    return request.post(`/public/opinion/getButlerOwnerGroupChat`, params);
}
// 参数接口
export interface GetButlerInternalStaffParams {
    /*当前第几页(默认1) */
    current?: number;
    /*每页条数(默认20) */
    size?: number;
    /*企业人员（管家）ID */
    userId: string;
    /*企业人员的姓名/工作手机号 */
    staffContent?: string;
    page?: {
        records?: {
            id?: Record<string, unknown>;
            /*开启成员ID */
            userid?: string;
            /*外部联系人的userid */
            externalUserid?: string;
            /*外部联系人头像 */
            avatar?: string;
            /*外部联系人的名称 */
            name?: string;
            /*该成员对此微信客户备注的企业名称（仅微信客户有该字段） */
            remark?: string;
            /*外部联系人的类型，1表示该外部联系人是微信用户，2表示该外部联系人是企业微信用户 */
            type?: Record<string, unknown>;
            /*外部联系人性别 0-未知 1-男性 2-女性 */
            gender?: Record<string, unknown>;
            /*外部联系人性别 0-未知 1-男性 2-女性 */
            addWay?: Record<string, unknown>;
            /*创建时间 */
            created?: string;
            /*修改时间 */
            updated?: string;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetButlerInternalStaffRes {
    code: number;
    data: {
        size: number;
        total: number;
        current: number;
        records: {
            /*成员ID */
            userid: string;
            /*成员姓名 */
            name: string;
            /*成员手机号 */
            mobile: string;
            /*职务信息 */
            position: string;
            /*成员部门ID */
            department: string;
            /*企业内同一个成员的open_userid是相同的 */
            openUserid: string;
            /*0表示未定义，1表示男性，2表示女性 */
            gender: number;
            /*头像url */
            avatar: string;
            /*头像缩略图url */
            thumbAvatar: string;
            /*是否是存档开启成员，0：否，1：是 */
            isPermit: boolean;
            /*创建时间 */
            created: Record<string, unknown>;
            /*更新时间 */
            updated: Record<string, unknown>;
            /*是否删除 */
            delFlag: boolean;
        }[];
        pages: number;
    };
    msg: string;
}
/**
 * 获取管家的内部员工
 * @param {object} params GetButlerInternalStaffArgs
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.userId 企业人员（管家）ID
 * @param {string} params.staffContent 企业人员的姓名/工作手机号
 * @param {object} params.page
 * @returns
 */
export function getButlerInternalStaff(params: GetButlerInternalStaffParams): Promise<GetButlerInternalStaffRes> {
    return request.post(`/public/opinion/getButlerInternalStaff`, params);
}
